package list_;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

/**
 * @author DCSGO
 * @version 1.0
 * 使用List的实现类添加图书
 * 并遍历，打印如下效果
 * 名称：水浒传		价格：9		作者:施耐庵
 * 名称：西游记		价格：10		作者:吴承恩
 * 名称：西游记		价格：10		作者:吴承恩
 * 名称：三国志		价格：80		作者:罗贯中
 * 名称：红楼梦		价格：99		作者:曹雪芹
 * 要求：
 * 1.按价格排序，从低到高
 * 2.使用ArrayList LinkedList Vector三种集合实现
 */
public class ListExercise02 {
    @SuppressWarnings({"all"})
    public static void main(String[] args) {
        //List books = new ArrayList();
        //List books = new LinkedList();
        List books = new Vector();
        books.add(new Book("红楼梦", 99, "曹雪芹"));
        books.add(new Book("西游记", 10, "吴承恩"));
        books.add(new Book("水浒传", 9, "施耐庵"));
        books.add(new Book("三国志", 80, "罗贯中"));
        books.add(new Book("西游记", 10, "吴承恩"));

        for (Object o : books) {
            System.out.println(o);
        }
        /*
         * 名称：红楼梦		价格：99		作者:曹雪芹
         * 名称：西游记		价格：10		作者:吴承恩
         * 名称：水浒传		价格：9		作者:施耐庵
         * 名称：三国志		价格：80		作者:罗贯中
         * 名称：西游记		价格：10		作者:吴承恩
         */

        System.out.println("++++++");
        sortBook(books);
        for (Object o : books) {
            System.out.println(o);
        }
        /*
         * 名称：水浒传		价格：9		作者:施耐庵
         * 名称：西游记		价格：10		作者:吴承恩
         * 名称：西游记		价格：10		作者:吴承恩
         * 名称：三国志		价格：80		作者:罗贯中
         * 名称：红楼梦		价格：99		作者:曹雪芹
         */
    }

    public static void sortBook(List books) {
        int n = books.size();
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                Book b1 = (Book) books.get(j);
                Book b2 = (Book) books.get(j + 1);
                if (b1.getPrice() > b2.getPrice()) {
                    books.set(j, b2);
                    books.set(j + 1, b1);
                }
            }
        }
    }
}

class Book {
    String name;
    String author;
    int price;

    public Book(String name, int price, String author) {
        this.name = name;
        this.author = author;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public String getAuthor() {
        return author;
    }

    public int getPrice() {
        return price;
    }

    @Override
    public String toString() {
        return "名称：" + name + "\t\t价格：" + price + "\t\t作者:" + author;
    }
}
